package com.zq.zhufengfm.adapter;

/**
 * Project_name : ZhuFengFM
 * Author : zhaoQiang
 * Date : 2015/10/22,16:30
 * Email : zhaoq_hero@163.com
 */

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.squareup.picasso.Picasso;
import com.zq.zhufengfm.utils.DimensionUtil;

import java.util.List;

/**
 * 轮播海报的  ViewPager  adapter
 */
public class PicPagerAdapter extends PagerAdapter{

    private Context context;
    private List<String> picData;

    public PicPagerAdapter(List<String> picData) {
        this.picData = picData;
    }

    @Override
    public int getCount() {

        int ret =0;

        if (picData != null) {
            if (!picData.isEmpty()){
                ret = Integer.MAX_VALUE;//使用整形最大值
            }
        }

        return ret;//使用整形最大值  来描述一个假的循环
    }

    /**
     * 判断view  是否是通过  或者由 Object创建出来的
     * 通常对于  只返回View的PagerAdapter 可以简写成  view==Object  ?
     * @param view   ViewPager 内部管理的一个View
     * @param object 由 instaniate
     * @return
     */
    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view ==object;
    }

    /**
     * 根据指定的位置   创建一个对象  这个对象可以就是View 也可以是管理View的对象
     *
     * 例如 ：Fragment
     * 最终在方法返回之前  一定要将实际的View  添加到container
     * @param container
     * @param position
     * @return
     */
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        Context context = container.getContext();

        //TODO 因为getCount 返回了整形的最大值  实际的数据个数是有限的
        //利用 position  % 数据个数
        int index = position % picData.size();

        //TODO 根据index  获取点击的位置;  以及数据
        ImageView ret = new ImageView(container.getContext());

        Picasso.with(context).load(picData.get(index)).into(ret);// 使用index  解决循环播放问题

        ViewGroup.LayoutParams lp =
                new ViewGroup.LayoutParams(
                        ViewGroup.LayoutParams.MATCH_PARENT,
                        DimensionUtil.dp2px(context,140)
                );

        ret.setScaleType(ImageView.ScaleType.FIT_XY);
        ret.setLayoutParams(lp);

        container.addView(ret);

        return ret;
    }


    /**
     * 销毁对象，从容器删除视图
     * @param container
     * @param position
     * @param object
     */
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {

       container.removeView((View) object);
    }
}
